/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {itemA下结论} from "./editor";
import {itemA元件上, itemA元件下, itemA元件它} from "./editorMeta";
import {itemA附图} from "../../boiler/AppendixDiagram";

export const 工作介质选=['蒸汽','导热油','有机热载体'];

// const input设计温度={
//     edit:(inp:any,setInp:(a:any)=>void, orc:any)=>{
//         console.log("input设计温度: inp=",inp,"orc=",orc);
//         const dates=[`内筒/夹套：${inp?.壳程设计温度}/${inp?.夹套设计温度}`, `管程：${inp?.管程设计温度}`];
//         return <div>该设备台账的参数：壳程设计温度&nbsp;{inp?.壳程设计温度??''}&nbsp; ;
//             管程设计温度&nbsp;{inp?.管程设计温度??''}&nbsp; ; 夹套设计温度&nbsp;{inp?.夹套设计温度??''}&nbsp;
//             <InputLine label='设计温度(℃)'>
//                 <BlobInputList value={inp?.设计温度 || ''} rows={1} datalist={dates}
//                                onListChange={v => setInp({...inp, 设计温度: v || undefined}) } />
//             </InputLine>
//         </div>;
//     },
//     names: ['设计温度' ],                   //contentArr.map(([_,name] : any, i:number)=> name),
//     toTail: '设计温度太多了需要另行设定',
// };
export const config设备概况 = [
    [['锅炉型号', '_$型号'], ['设备代码', '_$设备代码',],  ],
    [['产品编号', '_$出厂编号'],  ['联系人', '安全员' ]  ],
    [['制造单位', '_$制造单位'],  ['联系电话', '安全员电'] ],
    [['安装单位', '_$安装单位'], ['制造日期', '_$制造日期'] ],
    [['使用单位', '_$使用单位'], ],
    [['设备使用地点', '_$设备使用地点'],  ],
    [['分支机构', '_$分支机构'] ],
    [['分支机构地址', '_$分支机构地址'] ],
    //使用单位统一社会信用代码= 使用单位组织机构代码
    [['使用单位统一社会信用代码','_$使用单位信用码'],['邮政编码','_$使用单位邮编']],
    //后端快照没提供的 上次定检日期
    [['投入使用日期', '_$投用日期'], ['上次检验日期', {n:'上次定检日期',t:'d'},], ],
    //蒸发量（t/h）; ?约等于 ≈ 额定功率;  #单位#却不一样的！【离奇的做法】为何不固定给台账：每次做报告都需要设置这个吗？  默认是=蒸发量(T/H)
    [['额定热功率', '_$额定蒸发量','MW'],  ['额定压力', '_$额定压力','MPa'],  ['额定温度', '_$额定温度','℃'] ],
    //回流温度 回水温==回油温度
    [['出口温度', '_$出口温度','℃'], ['工作压力', '_$工作压力','MPa'], ['回油温度', '_$回流温度','℃'] ],
    [['介质名称', '_$介质名称',], ['介质牌号', '_$介质牌号',], ['介质化验日期', '_$介质化验日'] ],
    [['加热方式', '_$加热方式',],  ['耐压试验日期', '_$耐压试验日', ],  ['耐压试验压力', '_$耐压试验压','MPa'] ],
    [['燃料种类', '_$燃料种类'], [' ', {r: ' '}] ],
    [['检验依据',{r:'《锅炉安全技术规程》TSG 11-2020'}], ],
];

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        //【承压更少项目】，那些属于公共模板目录的 分项报告的唯一性检查在对方自己检查看。
        const result = assertNamesUnique([{value: rep?.tzFields},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA下结论, ...itemA元件上, ...itemA元件下, ...itemA元件它, ...itemA附图 ]},
            {value:['Projects', ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                    JSON.parse(e.currentTarget.value??'[]');
                    setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});

